var express = require('express');
var router = express.Router();
var queuefun = require('queue-fun');
var Queue = queuefun.Queue(); //初始化Promise异步队列类
var q = queuefun.Q;

router.get('/', (req, res, next) => {
    var queue1 = new Queue(1);

//定义一个Promise风格的异步方法
    function testfun(i) {
        var deferred = q.defer();
        setTimeout(function () {
            console.log(222)
            deferred.resolve(i)
        }, 2000)
        return deferred.promise;
    }

    // var log = function (a) {
    //     console.log(a);
    // }

    queue1.push(testfun, [1]) //向队列添加运行单元
        .then(console.log);

    queue1.push(testfun, [2]) //向队列添加运行单元
        .then(console.log);

    // queue1.push(function () {
    //     return 2;
    // }) //插入普通方法会按Promises/A+规则反回promise
    //     .then(console.log);
    //
    // queue1.unshift(testfun, [0]) //插入优先执行项 (后进先出)
    //     .then(console.log);
    //
    // queue1.allArray([3, 4], testfun, {'event_succ': log}) //插入多个运行项 array,完成一项,将执行一次log方法
    //     .then(console.log)
    //
    // queue1.allMap({'a': 5, 'b': 6, 'c': 7}, testfun, {'event_succ': log}) //插入多个运行项 map , 最后的promise值也是一个对应map
    //     .then(console.log)

//queue1.start(); //执行队列
    queue1.go(testfun, ['go']).then(res.send({status: 2}))


})


module.exports = router;